import Schema from 'validate'
// 姓名校验规则
const roomValidate = new Schema(
  {
    building: {
      type: String, // 字符串类型
      required: true, // 必填
      message: '楼号信息不能为空', // 提示信息
    },
    name: {
      type: String, // 字符串类型
      required: true, // 必填
      match: /^[\u4e00-\u9fa5]{2,5}$/, // 正则
      message: '正确填写2-5位中文姓名', // 提示信息
    },
    // 手机号验证规则
    mobile: {
      type: String, // 字符串类型
      required: true, // 必填
      match: /^1[3-9]\d{9}$/, // 正则
      message: '手机号码不合法', // 提示信息
    },
    //  身份证背面
    idcardBackUrl: {
      type: String, // 字符串类型
      required: true, // 必填
      message: '身份证背面信息不能为空', // 提示信息
    },
    //  身份证正面
    idcardFrontUrl: {
      type: String, // 字符串类型
      required: true, // 必填
      message: '份证正面信息不能为空', // 提示信息
    },
  },
  {
    strip: false,
  }
)

Page({
  data: {
    // 小区楼栋信息
    building: '',
    //  业主性别0女1男
    gender: 0,
    //  身份证背面
    idcardBackUrl: '',
    //  身份证正面
    idcardFrontUrl: '',
    //  业主电话
    mobile: '17724226785',
    //  业主姓名
    name: '朱莉',
    //  小区信息
    point: '',
    //  小区房间信息
    room: '',
    house: [],
  },
  // 上传身份证
  onChooseMedia(e) {
    // 区分 正面照片 还是 反面照片
    const { type } = e.mark //type的值为 "idcardFrontUrl" || "idcardBackUrl"
    wx.chooseMedia({
      count: 1, //最多可以选择1个文件
      mediaType: ['image'], //文件类型
      success: (res) => {
        // 获取临时文件地址
        const { tempFilePath } = res.tempFiles[0]
        //  调用上传文件api，把临时文件地址转为在线地址
        wx.uploadFile({
          url: wx.http.baseURL + '/upload', //	开发者服务器地址
          filePath: tempFilePath, //要上传文件资源的路径 (本地路径)
          name: 'file', //文件对应的 key，
          header: { Authorization: `Bearer ${getApp().token}` },
          success: (res) => {
            const data = JSON.parse(res.data)
            this.setData({
              [type]: data.data.url, //type的值为 "idcardFrontUrl" || "idcardBackUrl"
            })
          },
        })
      },
    })
  },
  // 删除身份证照片
  removePicture(e) {
    const { type } = e.mark
    // 移除图片路径
    this.setData({ [type]: '' })
  },
  // 接收路径参数
  async onLoad({ point, building, room, id }) {
    if (id) {
      //修改页面标题
      wx.setNavigationBarTitle({ title: '编辑房屋信息' })
      const res = await wx.http.get(`/room/${id}`)
      // 解构出status,和除了status之外的数据装到data对象汇总
      const { status, ...data } = res.data
      this.setData(data)
    } else {
      wx.setNavigationBarTitle({ title: '新增房屋信息' })
      this.setData({
        point,
        building,
        room,
      })
    }
  },
  // 提交审核
  async onSubmit() {
    // 表单校验
    const { id, building, gender, idcardBackUrl, idcardFrontUrl, mobile, name, point, room } = this.data
    const params = { id, building, gender, idcardBackUrl, idcardFrontUrl, mobile, name, point, room }
    // 姓名校验
    const Errs = roomValidate.validate(params)
    if (Errs.length) {
      return wx.utils.toast(Errs[0].message) //弹出提示信息
    }
    // 编辑房屋信息需要id,且有id,添加房屋信息没有id,也不需要id，此时params.id=undefined
    // 所以需要判断，如果params.id=undefined，需要删除id
    if (params.id === undefined) {
      delete params.id
    }

    await wx.http.post('/room', params)

    // 调用添加编辑房屋接口，实现新增
    wx.showToast({ title: '操作成功' })

    // 成功后跳转至房屋列表
    setTimeout(() => {
      wx.navigateTo({
        url: '/house_pkg/pages/list/index',
        fail(err) {
          wx.redirectTo({
            url: '/house_pkg/pages/list/index',
          })
        },
      })
    }, 1500)
  },
})
